<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />

  <title>hash_standard_resize_policy Interface</title>
  <meta http-equiv="Content-Type" content=
  "text/html; charset=us-ascii" />
  </head>

<body>
  <div id="page">
    <h1><tt>hash_standard_resize_policy</tt> Interface</h1>

    <p>A resize policy which delegates operations to size and
    trigger policies.</p>

    <p>Defined in: <a href=
    "../../../../include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>

    <h2><a name="link1" id="link1">Template Parameters</a></h2>

    <table class="c1" width="100%" border="1" summary=
    "Template Parameters">
      <tr>
        <td width="20%" align="left"><b>Parameter</b></td>

        <td width="50%" align="left"><b>Description</b></td>

        <td width="30%" align="left"><b>Default Value</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="Size_Policy1072992366" id=
"Size_Policy1072992366"><b>class</b> Size_Policy </a>
</pre>
        </td>

        <td>
          <p>Size policy type.</p>
        </td>

        <td><a href=
        "hash_exponential_size_policy.html"><span class="c2"><tt>hash_exponential_size_policy</tt></span></a></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="Trigger_Policy3611271815" id=
"Trigger_Policy3611271815"><b>class</b> Trigger_Policy </a>
</pre>
        </td>

        <td>
          <p>Trigger policy type.</p>
        </td>

        <td><a href=
        "hash_load_check_resize_trigger.html"><span class=
        "c2"><tt>hash_load_check_resize_trigger</tt></span></a></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="External_Size_Access1380482982" id=
"External_Size_Access1380482982"><b>bool</b> External_Size_Access </a>
</pre>
        </td>

        <td>
          <p>Indicates whether physical sizes can be accessed
          externally.</p>
        </td>

        <td><tt><b>false</b></tt></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="Size_Type42920436" id=
"Size_Type42920436"><b>typename</b> Size_Type </a>
</pre>
        </td>

        <td>
          <p>Size type.</p>
        </td>

        <td>size_t</td>
      </tr>
    </table>

    <h2><a name="link2" id="link2">Base Classes</a></h2>

    <table class="c1" width="100%" border="1" summary="Bases">
      <tr>
        <td width="80%" align="left"><b>Class</b></td>

        <td width="20%" align="left"><b>Derivation Type</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
</pre>
        </td>

        <td>
          <p>public</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
</pre>
        </td>

        <td>
          <p>public</p>
        </td>
      </tr>
    </table>

    <h2><a name="link3" id="link3">Public Types and
    Constants</a></h2>

    <h3><a name="link4" id="link4">General Definitions</a></h3>

    <table class="c1" width="100%" border="1" summary="Types">
      <tr>
        <td width="30%" align="left"><b>Type</b></td>

        <td width="55%" align="left"><b>Definition</b></td>

        <td width="15%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="size_type55424436" id="size_type55424436">size_type</a>
</pre>
        </td>

        <td>
          <pre>
<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
</pre>
        </td>

        <td>
          <p>Size type.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link5" id="link5">Policy Definitions</a></h3>

    <table class="c1" width="100%" border="1" summary="Types">
      <tr>
        <td width="30%" align="left"><b>Type</b></td>

        <td width="55%" align="left"><b>Definition</b></td>

        <td width="15%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="trigger_policy4019166151" id=
"trigger_policy4019166151">trigger_policy</a>
</pre>
        </td>

        <td>
          <pre>
<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
</pre>
        </td>

        <td>
          <p>Trigger policy type.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="size_policy1385592366" id=
"size_policy1385592366">size_policy</a>
</pre>
        </td>

        <td>
          <pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
</pre>
        </td>

        <td>
          <p>Size policy type.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<a name="external_size_access4043083014" id=
"external_size_access4043083014">external_size_access</a>
</pre>
        </td>

        <td>
          <pre>
<a href=
"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
</pre>
        </td>

        <td>
          <p>Indicates whether sizes can be accessed
          externally.</p>
        </td>
      </tr>
    </table>

    <h2><a name="link6" id="link6">Public Methods</a></h2>

    <h3><a name="link7" id="link7">Constructors, Destructor, and
    Related</a></h3>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
  hash_standard_resize_policy
  ()
</pre>
        </td>

        <td>
          <p>Default constructor.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
  hash_standard_resize_policy
  (<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy)
</pre>
        </td>

        <td>
          <p>constructor taking some policies <span class=
          "c1"><tt>r_size_policy</tt></span> will be copied by the
          <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
          object of this object.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
  hash_standard_resize_policy
  (<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy,
    <b>const</b> <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;r_trigger_policy)
</pre>
        </td>

        <td>
          <p>constructor taking some policies. <span class=
          "c1"><tt>r_size_policy</tt></span> will be copied by the
          <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
          object of this object. <span class=
          "c1"><tt>r_trigger_policy</tt></span> will be copied by
          the <a href=
          "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
          object of this object.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>virtual</b> 
  ~hash_standard_resize_policy
  ()
</pre>
        </td>

        <td>
          <p>Destructor.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b> 
  swap
  (<span class=
"c2"><tt>hash_standard_resize_policy</tt></span> &amp;other)
</pre>
        </td>

        <td>
          <p>Swaps content.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link8" id="link8">Policy Access Methods</a></h3>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
  get_size_policy
  ()
</pre>
        </td>

        <td>
          <p>Access to the <a href=
          "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
          used.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>const</b> <a href=
"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
  get_size_policy
  () <b>const</b>
</pre>
        </td>

        <td>
          <p>Const access to the <a href=
          "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
          used.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
  get_trigger_policy
  ()
</pre>
        </td>

        <td>
          <p>Access to the <a href=
          "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
          object used.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>const</b> <a href=
"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
  get_trigger_policy
  () <b>const</b>
</pre>
        </td>

        <td>
          <p>Access to the <a href=
          "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
          object used.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link9" id="link9">Size Access Methods</a></h3>

    <p>These methods are available only if the external size
    parameter indicates that external size access is allowed.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> 
  get_actual_size
  () <b>const</b>
</pre>
        </td>

        <td>
          <p>Returns the actual size of the container.</p>

          <p>This method returns the number of entries (used and
          unused) in the container. It is different from the
          container's size method, which returns the number of used
          entries. Calling this method will not compile when
          <a href=
          "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
          == <tt><b>false</b></tt>.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>void</b> 
  resize
  (<a href=
"#size_type55424436"><tt>size_type</tt></a> suggested_new_size)
</pre>
        </td>

        <td>
          <p>Resizes the container to <span class=
          "c1"><tt>suggested_new_size</tt></span>, a suggested size
          (the actual size will be determined by the <a href=
          "#Size_Policy1072992366"><tt>Size_Policy</tt></a>
          object).</p>

          <p>Calling this method will not compile when <a href=
          "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
          == <tt><b>false</b></tt>.</p>
        </td>
      </tr>
    </table>

    <h2><a name="link10" id="link10">Protected Methods</a></h2>

    <h3><a name="link11" id="link11">Insert Search
    Notifications.</a></h3>

    <p>Notifications called during an insert operation.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_insert_search_start
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search started.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_insert_search_collision
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search encountered a collision.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_insert_search_end
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search ended.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link12" id="link12">Find Search
    Notifications.</a></h3>

    <p>Notifications called during a find operation.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_find_search_start
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search started.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_find_search_collision
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search encountered a collision.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_find_search_end
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search ended.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link13" id="link13">Erase Search
    Notifications.</a></h3>

    <p>Notifications called during an insert operation.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_erase_search_start
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search started.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_erase_search_collision
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search encountered a collision.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_erase_search_end
  ()
</pre>
        </td>

        <td>
          <p>Notifies a search ended.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link14" id="link14">Content Change
    Notifications</a></h3>

    <p>Notifications called when the content of the table changes
    in a way that can affect the resize policy.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_inserted
  (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
</pre>
        </td>

        <td>
          <p>Notifies an element was inserted.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>void</b>
  notify_erased
  (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
</pre>
        </td>

        <td>
          <p>Notifies an element was erased.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<b>void</b> 
  notify_cleared
  ()
</pre>
        </td>

        <td>
          <p>Notifies the table was cleared.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link15" id="link15">Size Change
    Notifications</a></h3>

    <p>Notifications called when the table changes size.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>void</b>
  notify_resized
  (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
</pre>
        </td>

        <td>
          <p>Notifies the table was resized to <span class=
          "c1"><tt>new_size</tt></span>.</p>
        </td>
      </tr>
    </table>

    <h3><a name="link16" id="link16">Queries</a></h3>

    <p>Called to query whether/how to resize.</p>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>inline</b> <b>bool</b>
  is_resize_needed
  () <b>const</b>
</pre>
        </td>

        <td>
          <p>Queries whether a resize is needed.</p>
        </td>
      </tr>

      <tr>
        <td>
          <pre>
<a href="#size_type55424436"><tt>size_type</tt></a>
  get_new_size
  (<a href="#size_type55424436"><tt>size_type</tt></a> size, 
    <a href=
"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b>
</pre>
        </td>

        <td>
          <p>Queries what the new <span class=
          "c1"><tt>size</tt></span> should be, when the container
          is resized naturally. The current size of the container
          is <span class="c1"><tt>size</tt></span>, and the number
          of used entries within the container is <span class=
          "c1"><tt>num_used_e</tt></span>.</p>
        </td>
      </tr>
    </table>

    <h2><a name="link17" id="link17">Private Methods</a></h2>

    <h3><a name="link18" id="link18">Overrides</a></h3>

    <table class="c1" width="100%" border="1" summary="Methods">
      <tr>
        <td width="45%" align="left"><b>Method</b></td>

        <td width="55%" align="left"><b>Description</b></td>
      </tr>

      <tr>
        <td>
          <pre>
<b>virtual</b> <b>void</b>
  do_resize
  (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
</pre>
        </td>

        <td>
          <p>Resizes to <span class=
          "c1"><tt>new_size</tt></span>.</p>
        </td>
      </tr>
    </table>
  </div>
</body>
</html>
